In various computer applications, it is necessary to set and cancel timers in order to initiate events at some specified time in the future. Often, the numbers of timers that must be set and cancelled can be very large, sometimes in the thousands.
A typical timer system maintains scheduled events in a list sequenced by expiry time. While removing timers from such a list can be performed relatively simply by maintaining a doubly linked list, adding a timer to the list typically requires a time-intensive search through the list to find the proper insertion point based on the scheduled expiry of the timer.
Hence a need exists in the art for a system that supports the efficient setting and canceling of timers.